{
  /*
    学习目标：泛型练习 - 关注类型

  */

  // 1. 接收string 返回string[]
  type MyArray = <T>(item: T) => T[];
  const arrFn: MyArray = (item) => {
    return [item];
  };

  type SetNameFn = <T>(name: T) => { name: T };
  const setNameFn: SetNameFn = (name) => ({ name: name });
  const obj1 = setNameFn('123'); // {name: string}
  const obj2 = setNameFn(123); // {name: number}
  const obj3 = setNameFn(true); // {name: boolean}
  const obj4 = setNameFn({ age: 123 }); // {name: {age: number} }

  // 总结：
  // 2. 泛型，可以与其它类型组合使用， 如T[] 、 {aaa： T}、 [T]
  // 1. 泛型，在函数调用时，会捕获到的类型
}
